/**
 * @file bsp_log.c
 * @brief 
 * @author TuxMonkey (nqx2004@gmail.com)
 * @version 1.0
 * @date 2025-07-08
 * 
 * @copyright Copyright (c) 2025  DLMU-C.ONE
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2025-07-08 <td>1.0     <td>TuxMonkey     <td>内容
 * </table>
 */

#include "bsp_log.h"

#include "SEGGER_RTT.h"
#include "SEGGER_RTT_Conf.h"
#include <stdio.h>

/**
 * @brief 初始化日志系统
 */

void BSPLogInit()
{
    SEGGER_RTT_Init();
}

/**
 * @brief 打印日志
 * @param fmt 格式化字符串
 * @param ... 可变参数
 * @return int 成功返回打印的字节数，失败返回-1
 */

int PrintLog(const char *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    int n = SEGGER_RTT_vprintf(BUFFER_INDEX, fmt, &args); // 一次可以开启多个buffer(多个终端),我们只用一个
    va_end(args);
    return n;
}

/**
 * @brief 将浮点数转换为字符串
 * @param [out] str 输出字符串
 * @param [in] va 浮点数
 */

void Float2Str(char *str, float va)
{
    int flag = va < 0;
    int head = (int)va;
    int point = (int)((va - head) * 1000);
    head = abs(head);
    point = abs(point);
    if (flag)
        sprintf(str, "-%d.%d", head, point);
    else
        sprintf(str, "%d.%d", head, point);
}

